import service from './index'

/**
 * 获取商品列表
 * @param {Object} params - 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @param {string} params.keyword - 关键词搜索
 * @param {number} params.categoryId - 分类ID
 * @param {string} params.sort - 排序方式: 'price-asc', 'price-desc', 'newest', 'sales'
 * @param {number} params.minPrice - 最低价格
 * @param {number} params.maxPrice - 最高价格
 * @param {string} params.status - 商品状态
 * @returns {Promise}
 */
export const getProductList = (params) => {
  return service({
    url: '/products',
    method: 'get',
    params
  })
}

/**
 * 获取商品详情
 * @param {number} id - 商品ID
 * @returns {Promise}
 */
export const getProductDetail = (id) => {
  return service({
    url: `/products/${id}`,
    method: 'get'
  })
}

/**
 * 发布商品
 * @param {Object} data - 商品信息
 * @returns {Promise}
 */
export const publishProduct = (data) => {
  return service({
    url: '/products',
    method: 'post',
    data
  })
}

/**
 * 更新商品
 * @param {number} id - 商品ID
 * @param {Object} data - 商品信息
 * @returns {Promise}
 */
export const updateProduct = (id, data) => {
  return service({
    url: `/products/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除商品
 * @param {number} id - 商品ID
 * @returns {Promise}
 */
export const deleteProduct = (id) => {
  return service({
    url: `/products/${id}`,
    method: 'delete'
  })
}

/**
 * 上传商品图片
 * @param {FormData} formData - 包含图片文件的FormData
 * @returns {Promise}
 */
export const uploadProductImages = (formData) => {
  return service({
    url: '/products/upload-images',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 获取商品分类列表
 * @returns {Promise}
 */
export const getProductCategories = () => {
  return service({
    url: '/products/categories',
    method: 'get'
  })
}

/**
 * 获取热门商品
 * @param {number} limit - 返回数量
 * @returns {Promise}
 */
export const getHotProducts = (limit = 10) => {
  return service({
    url: '/products/hot',
    method: 'get',
    params: { limit }
  })
}

/**
 * 获取推荐商品
 * @param {Object} params - 查询参数
 * @param {number} params.limit - 返回数量
 * @param {number} params.categoryId - 分类ID
 * @returns {Promise}
 */
export const getRecommendedProducts = (params = { limit: 10 }) => {
  return service({
    url: '/products/recommended',
    method: 'get',
    params
  })
}

/**
 * 获取用户发布的商品
 * @param {Object} params - 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @param {string} params.status - 商品状态
 * @returns {Promise}
 */
export const getUserProducts = (params) => {
  return service({
    url: '/products/user',
    method: 'get',
    params
  })
}

/**
 * 获取商品评价
 * @param {number} productId - 商品ID
 * @param {Object} params - 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @returns {Promise}
 */
export const getProductReviews = (productId, params) => {
  return service({
    url: `/products/${productId}/reviews`,
    method: 'get',
    params
  })
}

/**
 * 添加商品评价
 * @param {number} productId - 商品ID
 * @param {Object} data - 评价数据
 * @param {number} data.rating - 评分(1-5)
 * @param {string} data.content - 评价内容
 * @returns {Promise}
 */
export const addProductReview = (productId, data) => {
  return service({
    url: `/products/${productId}/reviews`,
    method: 'post',
    data
  })
}

/**
 * 获取商品统计信息
 * @returns {Promise}
 */
export const getProductStats = () => {
  return service({
    url: '/products/stats',
    method: 'get'
  })
}

/**
 * 商品搜索建议
 * @param {string} keyword - 搜索关键词
 * @returns {Promise}
 */
export const getProductSuggestions = (keyword) => {
  return service({
    url: '/products/suggestions',
    method: 'get',
    params: { keyword }
  })
}
